package org.example;

import com.drew.imaging.ImageMetadataReader;
import com.drew.imaging.ImageProcessingException;
import com.drew.metadata.Metadata;
import com.drew.metadata.exif.ExifSubIFDDirectory;
import org.apache.commons.imaging.formats.jpeg.JpegImageMetadata;
import org.apache.commons.imaging.formats.tiff.TiffImageMetadata;
import org.apache.commons.imaging.formats.tiff.constants.ExifTagConstants;
import org.apache.commons.imaging.formats.tiff.write.TiffOutputSet;
import org.apache.commons.imaging.formats.tiff.write.TiffOutputField;
import org.apache.commons.imaging.formats.tiff.write.TiffOutputDirectory;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

/**
 * https://blog.51cto.com/u_16213420/10692480
 */
public class ExifWriter {

    public static void main(String[] args) {
        File file = new File("image.jpg");

//        try {
//            // 读取图片文件
//            BufferedImage image = ImageIO.read(file);
//            // 获取图片的 EXIF 信息
//            JpegImageMetadata metadata = (JpegImageMetadata) ImageMetadataReader.readMetadata(file);
//            TiffImageMetadata exif = metadata.getExif();
//
//            // 创建新的 EXIF 信息
//            TiffOutputSet outputSet = exif.getOutputSet();
//            outputSet.setGpsInDegrees(12.34, 56.78);
//            //outputSet.setGpsLatitudeRef("N");
//            //outputSet.setGPSLongitudeRef("W");
//
//            // 保存图片文件
//            File output = new File("image_with_exif.jpg");
//            metadata.setExif(outputSet);
//
//            ImageIO.write(image, "jpg", output);
//
//            System.out.println("EXIF 信息写入成功！");
//        } catch (ImageReadException | IOException e) {
//            e.printStackTrace();
//        } catch (ImageProcessingException e) {
//            throw new RuntimeException(e);
//        }

//        try {
//            // 读取图片文件
//            BufferedImage image = ImageIO.read(file);
//            // 获取图片的 EXIF 信息
//            Metadata metadata = ImageMetadataReader.readMetadata(file);
//            ExifSubIFDDirectory directory = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class);
//            metadata.addDirectory();
//            // 创建新的 EXIF 信息
//            TiffOutputSet outputSet = exif.getOutputSet();
//            outputSet.setGpsInDegrees(12.34, 56.78);
//            //outputSet.setGpsLatitudeRef("N");
//            //outputSet.setGPSLongitudeRef("W");
//
//            // 保存图片文件
//            File output = new File("image_with_exif.jpg");
//            metadata.setExif(outputSet);
//
//            ImageIO.write(image, "jpg", output);
//
//            System.out.println("EXIF 信息写入成功！");
//        } catch (ImageReadException | IOException e) {
//            e.printStackTrace();
//        } catch (ImageProcessingException e) {
//            throw new RuntimeException(e);
//        }








    }
}

